/*
2021-7-21
https://www.acwing.com/problem/content/description/97/
*/

#include<cstring>
#include<iostream>

using namespace std;
const int N=6;
char g[N][N],bg[N][N];
int dx[]={0,0,0,1,-1},dy[]={0,1,-1,0,0};

void turn(int x,int y)
{
    for(int i=0;i<5;i++)
    {
        int a=x+dx[i],b=y+dy[i];
        if(a<0 || a>=6 || b<0 || b>=6) continue;
        g[a][b]^=1;
    }
}

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        for(int i=0;i<5;i++) cin>>bg[i];
        int res=10;
        
        for(int i=0;i<1<<5;i++)
        {
            memcpy(g,bg,sizeof g);
            int cnt=0;
            
            for(int j=0;j<5;j++)
                if(i>>j&1)
                {
                    turn(0,j);
                    cnt++;
                }
            
            for(int j=1;j<5;j++)
                for(int k=0;k<5;k++)
                {
                    if(g[j-1][k]=='0')
                    {
                        turn(j,k);
                        cnt++;
                    }
                }
            
            bool flag=true;
            
            for(int j=0;j<5;j++)
                if(g[4][j]=='0')
                    flag=false;
            
            if(flag && res>cnt) res=cnt;
            
        }
        
        if(res>6) res=-1;
        cout<<res<<endl;
        
    }
    
    return 0;
}
